約 1,139,358 件
https://w.atwiki.jp/raycy/pages/196.html
SD (32008) 2009 年 09 月 16 日PM 08 34 http //slashdot.jp/~SD/journal/488302 茨城大学メディア通信工学科 工学博士の矢内浩文講師がタイプライターの歴史を語る。 「TYPEWRITER上段ネタ」については、http //www26.atwiki.jp/raycy/pages/194.html参照 タイプライターのキーボードの配列をバラバラにした目的は? 当時のタイプライターは、活字アームという部分が完全に元に戻ってから次のキーを打たないと、互いに絡んでしまって故障してしまうおそれがあったんです。それで、わざと早く打てないような配列、バラバラにして故障を防いだといわれています。 とりあえず論点だけ そもそも問題を問う。タイプライターのキーボードの配列はバラバラか? バラバラの定義。規則性がない、かな、、規則性が感じられない、subtizingにみて、ぱっと見ざっと見て、さば読みで、大づかみにみて規則性を感じない、 バラバラ性の検定。 バラバラの中の、実は規則性? 当時のタイプライターは、活字アームという部分が完全に元に戻ってから次のキーを打たないと、互いに絡んでしまって故障してしまうおそれがあった どのぐらいの打鍵間隔でならば、正常に印字できたか。あと、正常印字の条件を考慮しなければ、どれくらいダダダッっと、キーを打てたか。 干渉なし正常印字可能打鍵間時間。 干渉あり正常印字不可能打鍵間時間。 上記と、タイプバー間の近接具合との関係。必要復帰角度%は、隣接タイプバー間隔がタイプバー幅のときで、50%。時間にすると、半分よりは長い。 活字アーム。type-arm, type-bar, type-lever, letter-lever. long arm and short arm 「アーム」という機構 絡むの定義。tangle, jamming, stick fast, locking, fall upon, collide, interfere, 故障の定義。 それで、わざと早く打てないような配列、バラバラにして故障を防いだといわれています。 山田尚勇がカレント(1951)から読み取った順序だと、活字棒タイプバーの干渉対策があって、その結果配置が改変され、その結果として、早く打ちずらい方向へも、配列の配置は改変されていった。との順序。 さらに観点移動があって、キーボード電子化後の世代からみれば、機械的制約は余計であり、 ショールズら世代での、よしとされた基準も、 現代の目から見れば、隣接タイプバー クイック忌避 早く打てないように となって受け取られ、伝えられる、、 わざと早く打てないような配列 バラバラにして タイプバー間の関係性か キー配置間の関係性か link_trackbackcounter -
https://w.atwiki.jp/bambooflow/pages/141.html
C++標準テンプレートライブラリSTLの利用 C++標準テンプレートライブラリSTLの利用STLとは STLの構成 コンテナの種類 vector の利用vectorへのおもなアクセス メモリとしてのvectorの利用例 STLとは STL Standard Template Library C++のテンプレート機能を最大限に利用した標準ライブラリ。 STLは簡単にいうと配列のような要素の集合(コンテナ)を扱いやすくしたもの。 たとえば、動的な配列の確保を繰り返したり、ソートしたり、FIFOの構成を作ったり、連想配列を構成したりがSTLを使うことで容易になる。また、速度も早い。 現在すべてのC++のコンパイラで提供されている。 SystemCはVerilog-HDLと違って、C++で記述できるものは制限なく使うことができるのが利点。なので、活用できる便利な機能は存分に使うべし。 STLの構成 次のもので構成されている。 コンテナ 共通アルゴリズム イテレータ 関数オブジェクト ここでは、最低限使えればとりあえずよしとし、あまり詳しく説明しない。 もし、興味があるようであれば、別のサイトを参照のこと。 コンテナの種類 代表的なものは以下のとおり。 コンテナ 説明 vector 動的配列、ランダムアクセスが可能、Cの配列と互換がある deque 動的配列、両端キュー map 連想配列、バイナリツリーに要素を持ちソートされた状態で取り出せる list 双方向リンクドリスト、要素の入れ換えが得意 vector の利用 vectorは動的配列。 ランダムアクセスに向いているが、要素の追加・削除は要素数に比例して時間がかかる。 配列の代わりに使用するとよい。 vectorコンテナを利用するには次をインクルードする必要がある。 #include vector 必要なら次のおまじないをかく。 using namespace std; もし、ネームスペースがわかる人であれば、いちいちstd を書くことをすすめる。 vectorへのおもなアクセス 以下は全てではないが、よく使いそうなものを挙げた。 メソッド・書式 説明 iterator begin() 先頭を表すイタレータを返す iterator end() 末尾を表すイタレータを返す bool empty() vectorの要素が空なら"true"、空でなければ"false"を返す int size() 要素数を返す void clear() すべての要素を削除 reference at( size_type pos ) pos番目の要素を返す reference operator[]( size_type pos ) pos番目の要素を返す。「at」を使用することを推奨) void assign( const iterator first, const iterator last ) vectorの内容をfirstからlastに置き換え void assign( size_type n, const T x = T() ) vectorの内容をn個のxに置き換え void swap( vector x ) vectorの内容をxと交換 void resize(size_type new_size, T x = T()) 大きさを変える。必要なら領域を拡張し、拡張分はxで初期化される コンストラクタ 書式 説明(例) vector(); 例) vector int vect;長さ0のint型のvectorを作る vector( size_type size ); 例) vector int vect2(20);長さ20のint型vectorを作る vector( size_type size, const TYPE val ); 例) vector int vect3(10, 100);長さ10のint型vectorを作り、すべての要素を100で初期化する vector( const vector from ); 例) vector int vect4(vect1);vect1をコピーし、vect4とする メモリとしてのvectorの利用例 std vector unsigned int mem( 1024, 0 ); // RAM、1024個用意し、すべて0で初期化 // Write mem.at(addr) = w_data; // mem[addr] = w_data; でもOK // Read mem[addr] = mem.at(addr); // r_data = mem[addr]; でもOK
https://w.atwiki.jp/raycy/pages/177.html
2ちゃんねる よろしければ配列について教えろ その8より 499 :名無しさん:2009/08/05(水) 21 39 01 0 A B C D E┃F G H I J K L M N O┃P Q R S T U V W X Y┃Z * * * * 「高速打鍵でバーがもつれないようにするため、 QWERTY配列は意図的に打ちにくく設計してある」 みたいな説明を耳にすることがあるが、 500 :名無しさん:2009/08/05(水) 22 10 24 0 その俗説も「バーが絡まない範囲で可能な限り打ちやすく」だから、それと比較しても意味がない。http //b.hatena.ne.jp/raycy/20090903#bookmark-15772022 link_trackbackcounter -
https://w.atwiki.jp/aias-jsstyleguide2/pages/2.html
サイト内検索 コンテンツ トップページ 言語仕様に関するルールvar 定数 セミコロン ネストされた関数 ブロック内での関数宣言 例外 独自の例外 標準機能 プリミティブ型のラッパーオブジェクト 多段階のプロトタイプ階層 メソッドとプロパティの定義 delete クロージャ eval() with() this for-in ループ 連想配列 複数行の文字列リテラル 配列リテラルとオブジェクトリテラル 組込みオブジェクトのプロトタイプの書き換え Internet Explorerの条件付きコメント スタイルに関するルール命名規則プロパティとメソッド メソッドと関数のパラメータ GetterとSetter アクセサ関数 名前空間 ファイル名の命名規則 変数初期化の遅延 明示的なスコープ コードのフォーマット波括弧 配列とオブジェクトの初期化 関数の引数 無名関数の引渡し goog.scopeによる別名 行折り返しのインデント 空行 二項または三項の演算子 丸括弧 文字列 可視性(privateまたはprotectedなフィールド) JavaScriptのデータ型JavaScriptの型言語 JavaScriptで使えるデータ型 型キャスト そのパラメータ・プロパティは「Nullを許す」のか「省略できる」のか 型定義 テンプレート型 列挙型 コメントコメントの構文 JSDocのインデント JSDocの中のHTML トップ(ファイル)レベルのコメント クラスへのコメント メソッドと関数へのコメント プロパティへのコメント JSDocタグリファレンス goog.provideによる依存関係の規定 コンパイル ヒントとテクニック論理値表現 条件(三項)演算子 と || ノードリストへの反復処理 Closure Linterの使い方 リンク Google JavaScript Style Guide (原文) Closure Linter 更新履歴 取得中です。 管理人:aiaswood ご意見・お問い合わせ等はこちらまでどうぞ
https://w.atwiki.jp/eratoho/pages/152.html
eramakerおよびEmueraにおいて開発に使うERA-BASICに関する雑多なネタをQ A方式にて解説するページの予定だったが、変数と関数の基礎的な部分を解説するページになっている。 変数についてQ 配列変数とはなんですか? Q 配列変数の要素って? Q RESULTとかPLAYERとかも配列変数なの? Q 一文字変数ってなに? Q eramakerは変数少なすぎだ! Q 数値型変数と文字型変数の違いは? Q 変数の名前に特別な意味はあるのですか? Q キャラクター変数とはなんですか? Q キャラ番号と登録キャラ番号とはなんですか? 関数についてQ 関数とはなんですか? Q おい待てよ?JUMPもCALLもないのに呼ばれてる関数あるぞ? Q RETURN 0とRETURN 1の違いは? Q イベント関数とはなんですか? Q イベント関数に付与する性質とは? Q 特別な働きをする関数はありますか? Q BEGIN命令って何ですか? 変数について Q 配列変数とはなんですか? A 家族だと思えばいいかと eramakerにおいて、ほぼすべての変数は配列変数となっています。たとえば、一文字変数Aの中にはA 0とかA 1とかA 2とか複数の変数があります。これらはAという家族の中の一員だと思えば分かりやすいかと。 しかし、同じ名前とはいえ、家族ごとに違った個性がありますので、それを一括して指定することはできません。例えば…、 A = 2 上では、A 0(変数が単独で書かれている場合はたいてい後ろに 0が省略されていると思えばいいでしょう)に2が代入されますが、A 1とかA 2とかは中身が変化することはありません。 ここで、わざわざそうやって同じ名前にまとめる意味があるのか分からない人もいるでしょう。そこで、アイテムを実際に管理しているITEMという変数について考えてみましょう。 ITEM 1が1であるということはアイテム番号1を既に購入済みだということをあらわしています。これを配列にしないとするとたとえば、変数Iをアイテム1の購入フラグだとすれば、じゃあ、アイテム2は?アイテム3は?となると、どんどん新たな変数を使う必要があります。そして、実はERBにおいて一文字変数はアルファベット26文字分しかないので、アイテムは26個しか管理できなくなります。 それだけではありません。アイテムを購入した場合、アイテムフラグを1(以上)にする必要がありますが、そのときの処理としてITEM BOUGHT = 1ということをしています。これがもしITEM管理を別個の変数でしていた場合、1というアイテムを購入したときは変数I、2を購入すれば変数J、3を購入すれば変数K…などと、購入するアイテムごとに違う変数を操作しなければなりませんし、そのための分岐処理などを余計につくる必要があります。 そういう煩わしさをなくして分かりやすいコードにするためにも配列変数は必要不可欠であるといえます。 Q 配列変数の要素って? A その配列の具体的な入れ物を示すものです 前項のとおり、配列変数には同じ名前の付いた入れ物が複数ありますが、それを区別するのが「要素」です。たとえば、「A 2」というのは、名前がAで要素が2の数値配列変数であるとします。 また、変数の中には要素を複数持つものがあります。たとえば、「CFLAG 4 2」というものがありますが、これは、CFLAGという名前の要素が4の2の変数です。このように要素がふたつあるのを二重配列といいます。A 2のようにひとつしかないのを一重配列といいます。なおeramakerでは三重配列などはありません(Emueraでは三重配列変数が導入されています) 前項で配列変数を「家族」のようなものだと言いましたが、二重配列に関してはむしろ、「団地」のようなものだと解釈したほうがいいかもしれません。同じ団地の住人ではあっても、実際に居住している階が違いますし、違う階なら同じ番号の部屋でも同じ部屋ではありませんから。 Q RESULTとかPLAYERとかも配列変数なの? A 彼らも世帯持ちです eraの世界において、世帯を持たない変数はほとんどありません。まったくもって羨ましいわけですが、たとえば、COUNT、RESULT、DAY、TIME、MONEY、MASTER、TARGET、ASSI、PLAYER、ASSIPLAY、SELECTCOM、PREVCOM、LOSEBASE、UP、DOWN、PALAMLV、EXPLV、EJAC、FLAG、TFLAG、ITEM、ITEMSALES、BOUGHT、NOITEM、PBAND、RESULTS、STR、SAVESTR、NO、ISASSI、NAME、CALLNAME、BASE、MAXBASE、ABL、TALENT、EXP、MARK、RELATION、JUEL、CFLAG、EQUIP、TEQUIP、PALAM、STAIN、EX、SOURCE、NOWEX、GOTJUELはいずれも配列変数です。 なお、上の変数の中には特定のタイミングで初期化されたりするものがありますが、そのときにその配列変数の要素がすべて初期化されるのか、それとも特定の要素のみが初期化されるのかが違うものがあるので注意してください。たとえば、調教開始時にPREVCOM 0は-1に初期化されますが、PREVCOM 1やPREVCOM 2以降は初期化されません。 Q 一文字変数ってなに? A アルファベット一文字の名前の数値型配列変数です。 つまり、A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Zの26種類の数値型の配列変数です。数値型ですので文字列代入などには使えませんが、数字を扱うのに基本となる変数のことです。 なお、口上呼び出しなどで口上側が処理をする場合、バリアント本体側で使用している変数を口上側で操作するのは危険なことがありますので注意すべきです。 たとえば、本体側でA 0に本来の調教対象のキャラ番号を入れたまま口上を呼び出した場合、口上側でA=RAND 2などのようにAを書き換えてしまいますと、本体側に処理が戻ったときに不具合が起こってしまいます。 通常ならば、イベント呼び出しタイミングにおいて、破壊してはならない変数(フラグ)が明確であるべきですが、バリアント側でその情報が十分に用意されていないこともあります。そのときは口上作者側がGrepやソースチェックなどで、破壊してはならない変数をしっかり把握すべきであるでしょう。また、Emueraバリアントにおいては、ローカル変数であるLOCALやLOCALSを活用すべきでしょう。 Q eramakerは変数少なすぎだ! A 待ってください、ちゃんと配列を活用できてますか? 変数の数に限りがあることは既にご承知のことでしょうが、それも工夫次第でどうにかなる場合もあります。特に一番陥りやすい間違いが、 ABCDEFGIJKMNPQRSTUVXYZっておいおい22も使ってやがる! あと使えるのはHLOWの4つしかないだろ! という間違いです。これはこれらの一文字変数が「配列変数」であることを失念しているからこうなるのです。 同じようなことをしているフラグは同名のものにまとめることを考慮するべきでしょう。たとえば、別のソースにそれぞれ代入しているAとBとCという変数があればそれを、AとA 1とA 2という風に変えればBとCの部分は別の変数として利用できますね。こうして、フラグを整理してしまえば、フラグ不足なんてそうそう起きませんよ。 Q 数値型変数と文字型変数の違いは? A 中身に入るのがただの数字がそれとも文字列か?の違いです。 数値型変数とは中身に数値が入る変数のことです。そしてそれは、四則演算などで数学的に処理ができます。たとえば、 C = A 2 + B 1 という場合、C 0という数値変数にA 2という数値変数の中の数値とB 1という数値変数の中の数値を単純に加算したものが代入されます。 文字型変数とは中身に文字列が入る変数のことです。たとえばキャラクターの名前だとか、素質などの名前とかを入れたい場合に使われます。そしてそれは、数値型変数のような数学的処理はできません。ただし、文字列操作という形で加工することはできます。 Q 変数の名前に特別な意味はあるのですか? A ある場合もあります 変数の中には特別な意味を持つ名前が付けられているものもあります。たとえば、TARGETという変数は調教対象をあらわしていますし、PALAMという変数はパラメータをあらわしています。 元々のerakanonにおいてそう使うべく用意された変数ですので、それに見合った使い方をするのが一番分かりやすいと思われますが、開発の上ではそれに縛られることはありません。製作者のやりたいように変数を使えばいいのです。ただし、それぞれの変数には初期値が設定されていたり、特定のタイミングで初期化されたりしますので、その変数名を使った場合、どういう挙動をするかをよく分かった上で使いましょう。 以下に使用に注意すべき主な変数を記します。 COUNT:REPEATループにおけるカウントに使われている数値型変数です。変更しないほうがいいと思われます。また、前述のとおり、COUNTも配列変数ですが、実際にループカウント用として使われているのはCOUNT 0のみですので、REPEATループを入れ子にすることはeramakerではできません。Emuera拡張でFORやDOやWHILEなどを併用すれば可能ですが、そのときもカウントの数値変数を共用することはできません。 RESULT:何らかの結果が代入されている数値型変数です。CALLからRETURNで戻ったときのRETURNでの戻り値だとか、INPUTで代入された数値とかが入ったりします。 RESULTS:何らかの結果が代入されている文字型変数です。INPUTSで入力された文字列だとかが入ったりします。 SELECTCOM:この調教ターンに選択された調教コマンドの番号を示す数値型変数です。SELECTCOM 1以降はEmueraの拡張命令のCALLTRAINで使用しています。なお、SELECTCOMはeramakerの調教(BEGIN TRAINで始まる一連の処理)を使用しない場合には使われていないこともありえます(例:eratohoSB) ITEMSALES:そのアイテムが販売されているかどうかを示す数値型変数です。 STAIN:汚れをあらわす数値型変数です。ビット管理されているので注意してください。ビット管理については別のページの説明や本家の説明を読むなどをして勉強する必要があります。 CHARANUM:現在の登録キャラ数を表す数値型変数です。どの要素にも同じ数値が入っています。代入しても数値が変わらないので意味はありません。なお、Emueraでは代入しようとするとエラーになります。 RAND ランダムな数値を返す擬似配列の数値型変数です。代入しても意味はありません。なお、Emueraでは代入しようとするとエラーになります。 以上の変数は自動的に説明通りの使い方がされます。一方、次からの変数はERBで設定しないとただの容れ物です。 MASTER:主人の登録番号を示す数値型変数です。なお、主人の登録番号が必ず「0」であるとは限らないこともあります。 TARGET:調教対象の登録番号を示す数値型変数です。「0」ならたいていは主人が調教対象であることをあらわし、「-1」ならたいていは調教対象が存在しないことをあらわします。 ASSI:助手の登録番号を示す数値型変数です。「-1」ならたいていは助手が存在しないことをあらわします。 ASSIPLAY:助手調教中であるかどうかを示す数値型変数です。たいていは「0」なら助手調教中ではなくて、「1」なら助手調教中であることを示します。どのキャラが助手であるか?とか助手がいるかどうかは示していませんので注意してください。 PREVCOM:ひとつ前の調教ターンに選択されていた調教コマンドの番号を示す数値型変数です。ちなみに調教に入ったそのときには「-1」が代入されています。なお、PREVCOM 1以降は何も仕組みを作らなければ代入されることはありません。またPREVCOMに前ターンのSELECTCOMを代入するということは実際にその処理がなければ起こらないことに注意してください。自動的にそうなるわけではありません。 LOSEBASE:調教ターンにおけるBASE値の減少値を示す数値型変数です。なおキャラクター変数ではない(=二重配列変数ではない)ため、アクセスはTARGETを利用する必要があります。 EJAC:射精ゲージに関係する数値型変数です。ただし、射精があったときに自動的に変化したりはしません。そういう仕組みは別途拵える必要があります。 ITEM:そのアイテムを所有しているかどうかおよび所有数を示す数値型変数です。 NOITEM:アイテムなし設定が有効か無効かを示す数値型変数です。「1」ならアイテムなし設定で「0」ならアイテムなし設定ではないということを示しますが、たいていのバリアントでは「0」であると思われます。また、0と1以外の数値を取る可能性もあります。 STR:文字型変数です。一文字変数は数値型であるから、文字型変数をeraで扱いたいならこちらを多用することになるかもしれません。初期値はstr.csvで定義されます。なお、セーブデータに保存はされません。保存されたい文字型変数が使いたいなら次のSAVESTRを使うべきでしょう。 SAVESTR:文字型変数です。こちらはセーブデータに保存されるため、より貴重な存在だといえるでしょう。ただし、makerでは数値変数で出来る仕事しか出来なかったりします。(INPUTSで入力した文字を保存したりはできない) ISASSI:そのキャラが助手になったことがあるかどうかを示す数値型変数ですが、自動で設定はされないので助手化の処理で値を真に変える必要があります。 NAME、CALLNAME:いずれもそのキャラの名前が入っている文字型変数ですが、NAMEの方が本名でCALLNAMEの方が呼ばれ方もしくはあだ名などのように使うことになるでしょう。もちろん、まったく同じにそろえるとか、フルネームと略称という風に使い分けてもいいでしょう。 CFLAG:キャラクターごとに保持できる数値型変数ですが、実はChara**.csvにて「フラグ,***,###」という形式で初期設定することができます。 EQUIP:本家では説明されていませんが、キャラクター変数としてeramakerで利用することが可能な数値型変数です。Emuera拡張変数ではありません。 LOCAL Emueraでのみ使用可能なローカル数値型配列変数です。ローカル変数というのはeraの関数ごとにそれぞれ使うことができる変数のことで、同じLOCALという名前であっても、呼び出した関数によって違う値が入っています。 LOCALS Emueraでのみ使用可能なローカル文字型配列変数です。上記LOCALの文字型版で、同様に使えます。 Q キャラクター変数とはなんですか? A 登録キャラごとに配列が用意されている二重配列変数のことです ほとんどすべての変数が配列変数なのですが、中には登録キャラごとに配列が用意されている一連の変数があります。それをキャラクター変数といいます。キャラクター変数でない変数は一重配列変数であるので、登録キャラごとに別途フラグは用意できません。 キャラクター変数SOURCEの場合 SOURCE A B A…登録番号A番のキャラ B…SOURCE Bを示す 非キャラクター変数UPの場合 UP B B…PALAM Bを示す 対象は必ずTARGET 0(調教対象) つまり、非キャラクター変数で各キャラクターを管理するには、TARGET 0を操作してやっていくしかありませんが、現状そうやって操作した場合、別のキャラを退避するフラグが足りなくなると思われるので、eramakerでは調教対象を複数同時に調教するようなバリアントを作る場合にはフラグ不足に対応した仕組みを作る必要があるでしょう。なお、Emueraではこの辺の事情は少し好転してはいますが、やはり一工夫必要となります。 なお、どの変数がキャラクター変数であって、どの変数が非キャラクター変数であるか?というのはこのwikiの他のページや本家の解説などを参照してください。 Q キャラ番号と登録キャラ番号とはなんですか? A それぞれ意味合いが違う番号です キャラ番号とは、Chara***.csvで設定される番号で、ゲーム中でADDCHARA (番号)で追加されるのに使われる番号です。eratohoのほとんどのバリアントでChara001.csvに博麗霊夢さんのキャラ設定がありますが、そのcsvファイルの中に 番号,1, という行がありますが、それが霊夢さんのキャラ番号です。 一方、登録キャラ番号もしくはキャラ登録番号もしくは登録番号というのは、ゲーム中に主人もしくは奴隷として存在しているキャラクターたちに割り振られている番号です。こちらはキャラ番号とはまったく関係なく、通常はADDCHARAされていくたびに順番に、0,1,2,3…と追加されていくはずです。つまり、まだ登場していないキャラにかんしては登録番号なんてありません。あくまで、ゲームに登場しているキャラにのみ割り振られます。 数値変数のMASTER,ASSI,TARGETはそれぞれ中に入っている数値の登録番号のキャラがその役割であることを示します。キャラ番号のキャラがその役割であるというわけではないことに注意してください。 登録番号からそのキャラクターのキャラ番号を求めることはできます。それはNO (登録番号)です。主人のキャラ番号が欲しいならNO MASTER、調教対象のキャラ番号が欲しいならNO TARGETでもNOでもOKです。 通常、キャラクター変数における第一要素は登録番号でアクセスします。キャラ番号ではありません。なお、RELATIONという関係を表すキャラクター変数の第二要素はキャラ番号でアクセスします。登録番号ではありません。つまり… RELATION A B A…登録番号 (MASTER,ASSI,TARGET) B…キャラ番号 (NO MASTER,NO ASSI,NO TARGET) ということで、キャラ番号と登録番号を混同しないようにしてください。また、EmueraなどでSWAPCHARAやSORTCHARAなどを使う場合、登録番号が変わることに注意しましょう。 ちなみに、DELCHARA(番号)は、登録番号で指定します。キャラ番号ではありませんが、それは当然だと分りますね? 関数について Q 関数とはなんですか? A 特定の処理を行うための一連のコードです ERBを記していく上で、実行順番は上から下へ~~~です。ですが、ゲームスタートからずっと、上から下へ流していかなければならないというわけではありません。たとえば、SHOPコマンドで奴隷の購入をする場合と奴隷を調教する場合とゲームデータをセーブする場合とでは、それぞれそこからの処理が違うはずです。それをいちいちIF RESULT= ~ ELSE ~ ENDIFで順番に処理していくようにしたら、きっと大変見づらいコードになってしまうでしょう。 そういうときは、奴隷の購入を担当する処理部分を別に作り必要に応じてそれを呼び出すようにすればいいでしょう。そのときの別に作った処理部分のことをeraでは「関数」としています。 関数を呼び出す命令は、JUMPかCALLがあります。JUMPというのはその関数に処理が移動します。元々のところにはそのままでは戻りません。それに対してCALLはその関数の処理が終了したら元々のところのCALLの次の行からまた処理を再開します。なお、Emueraでは、CALLした関数からJUMPという動作が可能ですが、makerでは動作しないので注意が必要です。(っていうか、makerだとJUMPはどこで使えるんだろう)。 ERBにおいて関数は関数宣言行すなわち@関数名の行から開始されます。そして、そのERBファイルの末尾に到達するか、それとも次の関数の始まりの直前までがその関数です。つまり、次の関数宣言行があれば、そこから先は実行されず、処理は終了します。そのため、CALLで呼ばれているのならば元々の場所のCALLの次の行に戻りますし、JUMPで呼ばれているのならばそこでプログラムそのものが終了します。また、任意の場所で関数を終了させるためには命令RETURNを使用します。(実は関数の終わりに何もなくてもRETURN 0が実行されていたりする) Q おい待てよ?JUMPもCALLもないのに呼ばれてる関数あるぞ? A 関数によっては、自動的に呼ばれる関数も存在します ただ…、詳しくはもう少し下の設問をお読みください。 Q RETURN 0とRETURN 1の違いは? A CALLから戻ってきたときに関係あります 関数によくRETURN 0とかRETURN 1とかあります。RETURNは前問の答えのとおり、CALLで呼ばれたその関数を終わらせて元々の処理に戻すためのものですが、そのときにRETURNの後ろに数値を付加することが可能です。そして、それは実はRESULT 0という変数に代入されるのです。 つまりCALL文の次の行以降に、IF RESULT == 0 ~ ELSEIF RESULT == 1などと処理をすれば、CALLで呼ばれた関数内の処理に応じて戻った後に分岐を掛けることが可能になるというものです。 なお、当然のことですが、そういう仕掛けがなければRETURNの後ろにどういう数字が入っていても動作の上では意味はありません。 RETURN Bのように数値変数が指定されている場合はその変数の中身がRESULTに入ります。ただし、RETURN RESULTとした場合は、Emueraでは正常に動作しますが、makerではRETURN 0と同等になります。また、EmueraではRETURN A+Bのように数値変数だけでなく式を使うことが出来ます。 なお、RETURN文でなく、関数が終了した場合もCALLで呼ばれている場合には元々の処理に戻りますがそのときはRETURN 0と同様にRESULTには0が入っています。(RETURN 0が自動で実行されていると見ることも出来ます) Q イベント関数とはなんですか? A 特別な働きをするために設定された関数です eraにおいては、通常、同じ名前の関数は複数存在できません。仮に同じ名前の関数を作ると特定の法則に基づきどの関数が呼ばれるかが決定され、その関数のみが実行され、呼ばれなかったほかの同名関数は無視されます。 ところがイベント関数に関しては例外で、同じ名前の関数が複数存在してもその全てが処理されます。実行順番はやはり特定の法則がありますがそれは一応制御することもできます。 以下に各イベント関数を説明と一緒に列挙します。なお、イベント関数の存在は必須であるわけではないので、バリアントによってはそのイベント関数が存在しないこともありえます。 EVENTFIRST ゲームをはじめからはじめるときに呼ばれるイベント関数です。 EVENTSHOP SHOPに入るときに呼ばれるイベント関数です。 EVENTBUY SHOPで何かを購入したときに呼ばれるイベント関数です。 EVENTTRAIN TRAIN(調教)に入ったときに呼ばれるイベント関数です。 EVENTCOM 調教においてプレイヤーがコマンドを選択したあとに呼ばれるイベント関数です。 EVENTCOMEND 調教において、調教ターンの終了時に呼ばれるイベント関数です。 EVENTEND 調教終了処理の開始時に呼ばれるイベント関数です。 EVENTTURNEND ターン終了時に呼ばれるイベント関数です。 EVENTLOAD データをロードした直後に呼ばれるイベント関数です。Emuera専用です。 Q イベント関数に付与する性質とは? A イベント関数の処理について決定できる仕組みです 前項のとおり、イベント関数は同名関数が複数あることがありますが、そのときにどんな順番で実行したらいいかを制御するために、その関数宣言行の次に性質をあらわすものを付与できます。 #PRI これが付与された関数は他の同名関数よりも先に実行されます。ただ、これが付与された関数が複数ある場合にその中での優先度を決めることはそのままではできません。 #LATER これが付与された関数は他の同名関数よりも後に実行されます。ただ、これが付与された関数が複数ある場合にその中での優先度を決めることはそのままではできません。 #SINGLE これが付与された関数はこれを実行後にRETURN 1で終了した場合には他の同名関数があっても実行しません。RETURN 0で終了した場合には、他の同名関数を実行します。若干使い所が難しいので覚えなくても良いでしょう。 Q 特別な働きをする関数はありますか? A 決まったタイミングで呼ばれる関数はあります 前々項でイベント関数のことに触れましたが、eramakerではそれ以外の関数の中にも呼ばれるタイミングが決まっている関数が存在します。それらは想定された処理をするとうまく動作するようになっています。もちろん、それを無視するコードの書き方も可能ではありますが。ともかく、以下にそういう関数を列記して説明します。なお当然のことながらバリアントによっては、これらの関数がないこともありえます。 以下の説明において、~であることを想定していますとなっている場合、そうでない使われ方をされている場合はありますがそれは実際のコードで確認してください。 SHOW_SHOP EVENTSHOPの後(もしくはそれがない場合にはBEGIN SHOP直後)に呼ばれる関数です。販売可能な商品の陳列とSHOPコマンド入力をさせることを想定しています。 USER_SHOP SHOPで0~99以外の数字が選ばれた場合に呼ばれる関数です。SHOPでアイテムの購入以外のコマンド(調教開始や休憩やステータスチェックやセーブやロードなど)を実行するための処理に移行させる処理を想定しています。終了後はBEGINなどがなければSHOW_SHOPに戻ります。 SHOW_STATUS EVENTTRAINの後(もしくはそれがない場合にはBEGIN TRAIN直後)に呼ばれる関数です。調教に必要なステータスなどを表示することを想定しています。 COM_ABLExx SHOW_STATUSの後に、すべての調教コマンドについて呼び出される関数です。調教コマンドxxの実行可能か不可能かの決定を想定しており、返り値が0でなければ実行可能であり調教コマンドとして表示されます。0のときは実行不可能でありそのコマンドは表示されません。 SHOW_USERCOM COM_ABLExxの後に呼び出される関数です。COM_ABLExxの結果を踏まえて調教コマンドを表示したあとに、プレイヤーにコマンド入力をさせることを想定しています。 COMxx EVENTCOMの後(もしくはそれがない場合にはプレイヤーが調教コマンドを選んだ直後)に呼ばれる関数で、選んだ調教コマンドに対応したCOMxxのみが呼び出されます。対応するCOMxxがない場合にはこの下のUSERCOMが呼ばれるのでこちらは呼ばれません。選ばれた調教コマンドの実行処理を想定しています。 USERCOM 上の項目の通り、対応するCOMxxがない調教コマンドが入力された後に呼ばれる関数です。調教ターン中の実際の調教以外のステータス表示やヘルプや調教そのものの終了やプレイヤー交代などのコマンド処理を想定しています。 SOURCE_CHECK COMxxからの戻り値(RESULT 0)が0でないとき(すなわち調教コマンドが実行されたとき)にその直後に呼び出される関数です。調教コマンド実行後のSOURCE変化やパラメータへの反映などを想定しています。終了後はEVENTCOMENDがあればそれを呼び出します。そして、それが終わるかEVENTCOMENDがなければ…他にBEGIN命令などない場合NEXTCOM 0をチェックします。NEXTCOMが0以上ならばNEXTCOMの内容の調教コマンドを実行します。そうでなければSHOW_STATUSに戻ります。 SHOW_JUEL BEGIN ABLUP直後に呼び出される関数です。能力UPのために必要な対象の所有珠を表示させるというのを想定しています。 SHOW_ABLUP_SELECT SHOW_JUELの後に呼び出される関数です。プレイヤーに対象のどの能力をUPさせるかを選ばせるというのを想定しています。 ABLUPxx SHOW_ABLUP_SELECTにおいて、プレイヤーにより入力された数が0~99でなおかつ対応するABLUPxxがある場合に呼び出される関数です。対応するABLUPxxがなければ再入力を要求されるでしょう。また、入力した数が0~99の範囲外ならばこの下のUSERABLUPが呼ばれます。xxに対応した能力をUPさせる処理を想定しています。終了後はBEGINなどがなければSHOW_JUELに戻ります。 USERABLUP SHOW_ABLUP_SELECTにおいて、プレイヤーにより入力された数が0~99の範囲外である場合に呼び出される関数です。通常のABLUPによる能力UPではうまくいかない能力変化をさせる処理を想定しています。終了後はBEGINなどがなければSHOW_JUELに戻ります。 SAVE_INFO セーブデータに概要をつけるための関数です。この働きがあるのはこの関数のみです。呼び出されるタイミングはゲームデータがセーブされる直前です。 Q BEGIN命令って何ですか? A さまざまなシステム命令を呼び出す命令です 以上の設問より、特別なタイミングで関数が存在することは分ったと思います。そして、その特別なタイミングをERBで制御するための命令がBEGIN命令です。これを使うことにより、SHOPを呼び出したり調教を開始したり調教を終了したりターンを終了したりすることができます。もちろん、この仕掛けを無視して当該処理関数を直接CALLすることによりゲームを進行させる仕組みにすることもできますが、その場合は、必要となる各種フラグの初期化などをすべてコードとして記述する必要があります。それが分らないうちは既存の構造を利用しましょう。冒険するのは理解してからでも遅くはありません。 BEGIN命令が実行された場合、すぐに当該処理が行われるわけではなく、イベント関数やCALLで呼ばれた関数など実行すべきコードを全て実行し終えてから処理が行われます。また、BEGIN命令ができないタイミングも存在し、そのタイミングでBEGIN命令がされた場合にエラーにより挙動がおかしくなることがあるので注意してください。 BEGIN SHOP SHOPを呼び出すBEGIN命令です。EVENTSHOPがあれば呼び出し、なければSHOW_SHOPに直行します。 BEGIN TRAIN 調教を開始するためのBEGIN命令です。調教関連の一部のフラグを初期化した後、EVENTTRAINがあれば呼び出し、なければSHOW_STATUSに直行します。 BEGIN AFTERTRAIN 調教を終了するためのBEGIN命令です。EVENTENDに直行します。 BEGIN ABLUP 能力アップ画面を呼び出すためのBEGIN命令です。SHOW_JUELに直行します。 BEGIN TURNEND ターン(調教ターンのことではない)を終了するためのBEGIN命令です。EVENTTURNENDに直行します。 BEGIN FIRST ゲームを最初からはじめるところを呼び出すためのBEGIN命令で、Emueraで拡張されたものですのでeramakerでは使えません。なお変数の初期化は行われないのでRESETDATA命令を使うべきでしょう。 BEGIN TITLE タイトル画面を呼び出すBEGIN命令で、Emueraで拡張されたものですのでeramakerでは使えません。なお変数の初期化は行われないのでRESETDATA命令を使うべきでしょう。
https://w.atwiki.jp/eratoho-sub/pages/17.html
このページについて このページはeramakerまとめwikiの「開発者向け技術情報」の内容を転載したものが含まれています。 基本的な仕様については本家サイトの「改変のための情報」を参照のこと。 以下では06/06/02版のeramakerの実装に基づいて解説する。 Emuera あわせてEmuera1.22c に基づく情報も付記する /Emuera eramakerの仕様 システムの制限 ~~以上となっているものは調査した範囲では限界を見つけられなかったもの。 限界 備考 整数変数の値 -2147483648~2147483647 32ビット符号付 文字列変数の文字数 1024文字以上 関数名の文字数 1024文字以上 全角文字も使用可能 関数呼び出しスタック※ 1000 超えた場合、動作が不安定になり強制終了することもある キャラクタ登録数 16384(16進数で4000)※※ さらにADDCHARAすると応答がなくなる ※ @EVENTCOM CALL FUNC0001 @FUNC0001 CALL FUNC0002 @FUNC0002 …… これが続いて@FUNC1000あたりまで来ると不安定になる。 ※※ 1000人あたりで動作があやしいとの報告もあり。 どのみちセーブ・ロードに時間がかかるようになるので現実的ではない。 Emuera 限界 備考 整数変数の値 -9223372036854775808~9223372036854775807 64ビット符号付 文字列変数の文字数 2147483647文字? 関数名の文字数 2147483647文字? 全角文字も使用可能 関数呼び出しスタック 2147483647文字? 超えた場合、動作が不安定になり強制終了することもある キャラクタ登録数 2147483647文字? C#のListクラスやStringクラスの上限がEmueraの上限になると思われる。 /Emuera 演算子 eramakerは代入演算子が必要な場合、記号列の先頭から順に演算子を捜し、最初に見つかった代入演算子を認識する。 非代入演算子が必要な場合、記号列の先頭1文字または2文字を調べ、非代入演算子である方を認識する。どちらも演算子として認識出来る場合、2文字の方が優先される。どちらも認識できない場合はエラー。 何を言っているのかわからないかもしれないが、下の2つが等価になることから推測してほしい。 ;1-許容範囲な記法 A =+=* B =+=* C SIF D 0 E == F == G ;2-標準的な記法 A = B = C SIF D 0 E = F G ;NG-全ての行でエラー。 A = B =+=* C SIF D = 0 E = F !!== G 代入演算子として"=="が"="の代わりに使えるのはこの実装による。 逆に数式中で"=="の代わりに"="を使用するとエラーになるのもこの実装による。 また、" "が"!="ではなく" "と認識されてしまうことに注意が必要。 Emuera Emueraでは「1-許容範囲な記法」の書式は使えない。「2-標準的な記法」のようにきちんと書かないと認識されない。例外的に代入演算子として"=="を"="の代わりに使うことができる。 /Emuera 単項演算子 単項演算子として"-"が使えるが、意図した通りに動作しない場合が多い。 特に二項算術演算子と比較演算子の左項に単項演算子付きの項があると単項演算子は無視されてしまうようである。 A = (-1) + 0 + 0 B = 0 + (-1) + 0 C = 0 + 0 + (-1) D = 0 -1 E = -1 0 PRINTFORML A={A}, B={B}, C={C} PRINTFORML D={D}, E={E} ;出力 A=1, B=1, C=-1 D=1, E=0 また負の数や変数に対して単項演算子を用いるとエラーになる。 ;エラー! eramaker曰く「計算式の中にマイナス符号の連続を見つけました。」 A = -(0-1) ;エラー! eramaker曰く「計算式展開時に不明な変数名が見つかりました。」 B = 1 C = -B おそらく使わない方が無難。 Emuera この問題は修正されている。しかしeramakerと動作が異なることになるので両方に対応させたい場合はやっぱり使わない方が無難。 /Emuera 2項演算子 以下の演算子が使用できる 分類 優先度 代入演算 記号 算術演算子 高 ○ *, /, % ↑ ○ +, - 比較演算子 × , , =, = × ==, != 論理演算子 ↓ ○ , | 低 × , || カッコがあればカッコの中が先に計算され、カッコがなければ優先度にしたがって順番に計算される。 Emuera 同じ。 /Emuera 代入演算子 代入命令で使用するための演算子。 "="のほか、上の表で代入演算に○をつけた演算子は"="と合わせて複合代入演算子として使える。 C言語のように数式の途中で代入演算子を使うことはできない。 また、代入演算子のない式で行を構成することもできない。 複号演算子は、例えば 変数 += 数式 は 変数 = 変数 + ( 数式 ) とほぼ等価になる。 厳密には以下のような場合には等価ではない。 RAND 100 += 1 RAND 100 = RAND 100 + 1 上はRAND 100の値が1増えるが、下の式はRAND 100に1~100までのランダムな値が代入される。 もっともRANDに代入した値を参照する方法が無いのでこの違いが何かに影響することは無い。 Emuera 同じ。 /Emuera 変数 全ての変数は何らかの形で配列変数である。 配列変数を呼び出す際に引数を省略することができる。 通常の配列変数なら" 0"、キャラクタ変数なら1つ省略すると" TARGET"、2つ目は" TARGET 0"を省略したと見なされる。 一貫して引数を省略して使えば配列変数でないかのように用いることが出来る。A~ZやCOUNTなどは通常はこのように使われる。 また、引数を数式にすることもできる。 例えば以下の2つの式はどちらも有効で同じ意味になる。 A = ABL TALENT A = ABL TARGET (TALENT TARGET 0) ただし、代入先(左辺)の配列変数に数式の引数を指定するとエラーになる。 ;NG ABL TARGET (TALENT TARGET 0) = A キャラクタ変数の第1引数を省略しない場合は少し特殊で、第1引数には変数しか指定できない。 NAMEやISASSIのような引数が1つしかない変数でも同様。 以下のように定数や数式を指定するとエラーになる。 ;NG X = ABL 0 0 X = ABL (TARGET + 1) 0 NO (MASTER + 1) = X PRINTFORMW %NAME (COUNT + 1)% しかし、エラーにならない場合もある。法則は不明。 ;OK ABL 0 0 = X X = NO (MASTER + 1) PRINTFORMW {NO (MASTER + 1)} Emuera 省略に関しては同じ。ABL 0 0 や ABL (TARGET + 1) 0 のような表記もOKになっている。また、左辺の配列変数に数式の引数を指定してもエラーにならない。 /Emuera 数値配列型変数 eramakerの数値型変数が扱える値の範囲は32ビット符号付整数の範囲である。 すなわち、-2147483648~2147483647の範囲であり、これを超えるとオーバーフローが発生する。 全ての数値型変数は実は配列変数である。 A 100やPBAND 200を使用することもできるし、セーブも行なわれている。 下の表で要素数がnのとき、変数に使える範囲は0~(n-1)である。 例えばLOSEBASEは要素数が1000なのでLOSEBASE 999は使用できるがLOSEBASE 1000は使えない。 配列変数の最後の要素が0で無い場合、セーブ・ロード後にデータが破壊されるバグが確認されている。 実際に使える範囲は0~(n-2)と考えるべきだろう。 初期値が書いていない変数はゲーム開始時に全て0が代入される。 多くのバリアントでは例えば@EVENTCOM中でTFLAG 0~29を0にするなどの処理を行なっているが、ここではeramaker.exeが行なう初期化についてのみ書いてある。 Emuera 64ビット符号付整数の範囲、つまり -9223372036854775808~9223372036854775807 の範囲で使用できる。この範囲を超えてオーバーフローが起きるとエラーで強制終了する。セーブロード時のバグは修正されている。 /Emuera 表の中で公式の解説と異なる値には赤字にした。 変数名 要素数 変更 セーブ 初期値 初期化されるタイミング A~Z 1000 ○ ○ - - COUNT 1000 ○ ○ - - RESULT 1000 ○ ○ - - DAY 1000 ○ ○ - - TIME 1000 ○ ○ - - MONEY 1000 ○ ○ - - MASTER 1000 ○ ○ - - TARGET 1000 ○ ○ 1 ゲーム開始 ASSI 1000 ○ ○ -1 ゲーム開始 PLAYER 1000 ○ ○ - - ASSIPLAY 1000 ○ ○ 0 BEGIN TRAIN SELECTCOM 1000 ○ ○ - - PREVCOM 1000 ○ ○ -1 BEGIN TRAIN NEXTCOM 1000 ○ ○ -1 BEGIN TRAIN LOSEBASE 1000 ○ ○ 全て0 @SHOW_USERCOM終了時 UP 1000 ○ ○ 全て0 @SHOW_USERCOM終了時UPCHECK時 DOWN 1000 ○ ○ 全て0 @SHOW_USERCOM終了時UPCHECK時 PALAMLV 1000 ○ ○ 01005003000100003000060000100000150000250000 ゲーム開始 EXPLV 1000 ○ ○ 0142050200 ゲーム開始 EJAC 1000 ○ ○ 10000 ゲーム開始 FLAG 10000 ○ ○ - - TFLAG 1000 ○ ○ 全て0 BEGIN TRAIN ITEM 1000 ○ ○ - - ITEMSALES 1000 ○ ○ - - BOUGHT 1000 ○ ○ - - NOITEM 1000 ○ ○ ※ ゲーム開始 PBAND 1000 ○ ○ 4 ゲーム開始 CHARANUM 1000 ※※ ※※ - - RAND 1000 ※※ ※※ - - ※GAMEBASE.CSVの"アイテムなし"の値で初期化される。0と1以外も指定できる。 ※※CHARANUMはどんな要素を指定してもキャラの登録数が返ってくる。RANDはランダムな値が返ってくる。 他の変数と同じように代入できセーブもされるが代入した値を使用する方法が無いので意味は無い。 Emuera VariableSize.CSVによって配列の要素数を変更できる。CHARANUMとRANDは代入不可になっており、代入しようとするとエラーになる。 /Emuera 文字列配列型変数 RESULTSも配列変数である。 ABLNAME~ITEMNAMEは実際には疑似配列でありどんな引数を指定してもエラーにはならないがPRINT_ABL命令などでエラーが起きる原因となる。 ここではPRINT_XXXでエラーが起きない範囲を要素数の限界とした。 変数名 要素数 変更 セーブ 初期値 初期化されるタイミング RESULTS 100 ○ × - - ABLNAME 100 × × ABL.CSV - TALENTNAME 1000 × × TALENT.CSV - EXPNAME 100 × × EXP.CSV - MARKNAME 100 × × MARK.CSV - PALAMNAME 200 × × PALAM.CSV - ITEMNAME 1000 × × ITEM.CSV - STR 20000 ○ × STR.CSV - SAVESTR 100 ○ ○ - - Emuera ABLNAME~ITEMNAMEは疑似配列だが範囲を超えた引数を指定するとエラーになる。item.csvなどで配列の範囲を超えた数字を指定してもLv1警告が出るだけで無視される。RESULTS、SAVESTRについてはVariableSize.CSVで要素数を変更できる。その他のcsvから定義するタイプの変数は要素数を変更できない。 /Emuera キャラクター変数 キャラクター変数はNO、ISASSI、NAME、CALLNAMEの4つを除き全て二重配列である。 二重配列は以下のような形で呼び出す。 A = ABL MASTER 2 1つ目の引数を省略し、ABL 2と書くと、ABL TARGET 2と解釈される。 2つ目の引数も省略し、ABLと書くと、ABL TARGET 0と解釈される。 変数名 型 要素数 変更 セーブ 初期値 初期化されるタイミング NO 数値 - ○ ○ - - ISASSI 数値 - ○ ○ - - NAME 文字列 - × ○ - - CALLNAME 文字列 - × ○ - - BASE 数値 100 ○ ○ - MAXBASE 数値 100 ○ ○ - - ABL 数値 100 ○ ○ - - TALENT 数値 1000 ○ ○ - - EXP 数値 100 ○ ○ - - MARK 数値 100 ○ ○ - - RELATION 数値 100 ○ ○ - - JUEL 数値 200 ○ ○ - - CFLAG 数値 1000 ○ ○ - - EQUIP 数値 100 ○ ○ - - TEQUIP 数値 100 ○ ○ 全て0 BEGIN TRAIN PALAM 数値 100 ○ ○ 全て0 BEGIN TRAIN STAIN 数値 100 ○ ○ 00218その他0 BEGIN TRAIN EX 数値 100 ○ ○ 全て0 BEGIN TRAIN SOURCE 数値 100 ○ ○ 全て0 @SHOW_USERCOM終了時 NOWEX 数値 100 ○ ○ 全て0 @SHOW_USERCOM終了時 GOTJUEL 数値 200 ○ ○ 全て0 BEGIN TRAIN Emuera NAMEとCALLNAMEが変更○。VariableSize.CSVで要素数を変更できる。 /Emuera 条件文の記述ミスによるフリーズ 条件文に、たとえば、 IF TALENT 86 や、 IF A == 3 || A == 7 || A == などのように、不完全な記述があると、そこでeramakerがフリーズしてしまうので注意。 Emuera フリーズはしないがエラーで強制終了する /Emuera Emueraの仕様 Emuera 122c に同梱されているetcフォルダ内の"eramakerとの違い.txt"を参照。
https://w.atwiki.jp/suffix/pages/628.html
メモリ確保等の時に使用できる。 int* a = (int*)malloc(sizeof(int) * 個数); といった形で使うことが多い。 ちなみに int a[50]; for(int i = 0; i sizeof(a) / sizeof(a[0]); i++) { } といったように性的配列の個数を知るためにsizeof(変数名)/sizeof(変数名[0]) というのはよく使われる。 ただし、上の行のように動的配列の場合にはうまくいかない。 mallocしたaに対し、sizeofをするとaの配列の個数ではなく int型の長さの4が返るので注意。
https://w.atwiki.jp/wonder_kichijoji/pages/35.html
トリケラトプス本確認テスト(2,3日目)解答 演習1 const int num1;とint num2;が宣言されている時、num1とnum2の違いは何か? num1は「定数」でnum2は「変数」です. ちなみにC/C++などで用いる「#define」ディレクティブはC#では存在しません. 演習2 ((2/40.0f)*100)の結果は? 5です. (2/40.0f)で2に対して暗黙的な型変換が起きています. ちなみにC#ではfloatの別名として「System.Single」が存在します. エラー文で「System.Single」と出てきたら,Unity側のエラーではなくC#の時にSystem関連のfloat周りを疑いましょう. 演習3 以下の表を埋めよ 型 大きさ[Byte] 値の範囲 int 4 -(2^31)〜((2^31)-1) uint 4 0〜((2^32)-1) short 2 -(2^15)〜((2^15)-1) long 8 -(2^63)〜((2^63)-1) char 2 -(2^15)〜((2^15)-1) byte 1 0〜((2^8)-1) sbyte 1 -(2^7)〜((2^7)-1) C/C++erがよくやりがちなこと. RGB値保存する配列作るぞ!まずは赤から!「char red;」だ! (これは意図してない動きしそうですね) 注意しましょう. ...もしやるなら「byte red;」ですかね. 演習4 double num = 10; 上のプログラムでは,double型「num」にint型「10」を代入しているがエラーが起きない. なぜか? (「***な型変換が行われているから」ですね) 暗黙的な型変換が行われているから. では「明示的な型変換」とはなんでしょうか?? 演習5 入力値(整数)を13で割った時のあまりを表示させよ。 (エラー時は「エラー」と表示) 例: -1→エラー 0→エラー 11→11 12→12 13→0 14→1 同じ出力を得られていれば正解です. ちなみに「あまりを求める」ということを情報では「合同式(mod)」としてよく用います. 演習6 半径(自然数)を入力したとき、円周率を3.14として面積を出力せよ。 (エラー時は「エラー」と表示) 例: -1→エラー 0→エラー 1→3.14 2→12.56 同じ出力を得られていれば正解です. 演習7 入力値(自然数)に対して、 3で割り切れる数なら「hoge」 5で割り切れる数なら「piyo」 (エラー時は「エラー」と表示) 例: -1→エラー 0→エラー 2→ 6→hoge 10→piyo 15→hogepiyo 同じ出力を得られていれば正解です. 「if文の2連続」と「if-if else文」とでは挙動が変わります. 教える際に注意しましょう. 演習8 入力値(整数)を月と考え,1〜12に対応する英語を出力せよ. 1〜12以外の入力には「エラー」を出力せよ. ただしswitch文を用いること,if文を用いてはいけない. 例 -1→エラー 0→エラー 13→エラー 1→Jan. 10→Oct. 12→Dec. 同じ出力を得られていれば問題ありません. あえて数値を数字として考えて,文字列のswitch文を組めばできますかね. 人とコンピュータでは「数字と数値の違い」の重要性が大きく異なります.注意しましょう. 演習9(3日目 1.for文) Forの多重ループ 入力値を試行回数として,双六(1〜6)の各目の出る確率を出力せよ 例: -1→エラー 0→0,0,0,0,0,0 1→0,1,0,0,0,0 2→0,0.5,0.5,0,0,0 同じ出力を得られていれば問題ありません. 徐々に1/6に収束することを確認するといいでしょう. 演習10(3日目 2.配列) 以下の手順で配列を用意して,並び替えて表示せよ. ① 入力値nを取得 ② nが1以上なら長さnの配列numArrayを生成 ③ numArrayの各要素にランダムで値を格納 ④ 小さい順で並び替え ⑤ 表示 同じ出力を得られていれば問題ありません. ソート方法はなにを使いましたか? ソート方法とオーダー記法について調べてみると,数学好きの子どもへの提案の幅が広がるかもしれません. 演習11(3日目 2.配列) 9x9の2次元配列に,九九の結果を入れよ. 同じ出力を得られていれば問題ありません. 最後に わからない点があれば聞いてください. また,興味が少しでも湧いたら調べてみてください. 豆知識が子供たちや親御さんからの信頼に繋がることもあります.
https://w.atwiki.jp/radis/pages/16.html
Scalaでクイックソート def qsort(a List[Int]) List[Int] = a match{ case Nil = Nil case x xs = { val smaller = xs.filter(_ = x) val larger = xs.filter(_ x) qsort(smaller) (x qsort(larger)) } } 乱数を生成してソート qsort((for (i - 1 to 100) yield scala.util.Random.nextInt(100)) toList) 標準関数でソート List(1,5,7,2,10,4) sortWith(_ _) ランダムな文字列 (for (i -1 to 10) yield scala.util.Random.nextPrintableChar) mkString バイト配列を作成してfloatの値などを書き込む import java.nio.{ByteBuffer,ByteOrder} val ba = new Array[Byte](100) val wb = ByteBuffer.wrap(ba) wb.order(ByteOrder.LITTLE_ENDIAN) wb.putFloat(3.1415F) wb.putInt(1) ファイルにfloatの値を書き込む import java.io._ val f = new FileOutputStream("testfile") val d = new DataOutputStram(f) d.writeFloat(3.1415F) d.close ファイルからfloatの値を読み込む import java.io._ val f = new FileInputStream("testfile") val d = new DataInputStream(f) val data = d2.readFloat ファイルをすべて読み込みバイト配列に収容 import java.io._ val f = new FileInputStream("samplefile.v") val bytes = new Array[Byte](f.available) //f.availableはファイルサイズを返す。 new BufferedInputStream(f).read(bytes) f.close バイト配列からファイルを作成 import java.io._ val a = Array[Byte](1,3,5,7,9) val f = new FileOutputStream("testfile.bin") f.write(a) f.close floatの値を等価のint(4バイト)に変換、またその逆 import java.lang._ val i = Float.floatToIntBits(3.1415F) val f = Float.intBitsToFloat(i) 親配列[Byte]の位置nからの順列が、子配列[Byte]と一致するかどうかを調べる。 def commonSeq2(p Array[Byte], c Array[Byte], n Int) = (0 to c.length-1) forall(i = p(n+i) == c(i)) 素数かどうかの判定 def isPrime(i Int) = i match { case 1 = false case 2 = true case _ = (2 to math.sqrt(i).toInt+1).forall(i % _ != 0) } 1から1000までの素数を求める (1 to 1000) filter(isPrime) 16進数表示 printf("%02x",255) 時刻を表す文字列をparseする import java.text.SimpleDateFormat val df = new SimpleDateFormat("yyyy/MM/dd HH mm ss") println(df.parse("2011/06/20 15 24 59"))
https://w.atwiki.jp/rakdeadsfe/pages/38.html
目次 祭囃し編のカケラ紡ぎをまとめたものです。 重大なネタバレを多く含みます。閲覧注意。 時系列に並べ直しました。 裏エンディングの攻略法 一度クリアし、もう一度ミスなしでカケラを紡ぐと52個目のカケラが登場し、裏エンディングへと繋がる。このためには、ジャンプモードの「カケラ紡ぎ」から始める必要がある。 ジャンプリスト末尾の「五十個のカケラ」からでは登場しない ので注意。 なお、52個目のカケラを出した状態でセーブし、そのデータをロードするとフリーズするとのバグ報告があるのでご注意を。(フリーズしないこともある) 目次 [#m3e90a48] 昭和52年以前 [#v733bf5a] 026. 地元説明会 [#vba1e416] 040. 古手梨花 [#ae5b6f24] 昭和53年 [#pc0d6715] 009. ダム計画撤回作戦 [#afe6a1c9] 023. 富竹ジロウ [#ad477fb8] 昭和54年 [#w2510097] 018. 入江京介 [#b0bedd4b] 017. 入江の生い立ち [#f085a3ad] 012. 女王への協力依頼 [#xf0e5535] 010. 谷河内の採石場 [#ke5696aa] 027. 神主の憂鬱 [#g9d143e7] 013. バラバラ殺人事件 [#mc2b3b36] 005. 生贄第一号 [#j3332e9f] 024. おやっさん [#nfac9b1b] 004. 研究快調 [#o1369367] 019. 定期監査 [#sea7a8a7] 昭和55年 [#h6dc9860] 030. 北条悟史 [#l7196609] 039. 北条沙都子 [#m673b688] 029. 北条兄妹 [#o8d0632e] 038. 園崎魅音 [#mb0e53c3] 006. 生贄第二号 [#t50b26da] 028. 兄の苦悩 [#n4204f58] 001. C103投与実験 [#gbec06e3] 014. 白川公園転落事故 [#f9853104] 002. H170 [#vf23c1fa] 昭和56年 [#u9312071] 011. 女王の母の不信 [#vac26b0e] 022. 一二三四 [#v3f58ff1] 007. 生贄第三号 [#jdea0283] 015. 古手夫妻怪死事件 [#g60fb6d9] 昭和57年 [#h392b41a] 003. 赤いカプセル薬 [#y808a2c4] 035. 部活結成 [#n5de0687] 037. 竜宮レナ [#z8bef087] 032. 四年目の足音 [#sfa4d9cc] 031. 休部届け [#m3bb8d30] 016. 北条叔母撲殺事件 [#pb3c157c] 008. 生贄第四号 [#u9dbd9ef] 025. サイコロの1 [#f6d1c963] 020. 失意 [#x0506220] 021. デジャヴ [#x274b822] 042. 終末への誘い [#n03bc680] 昭和58年 [#h929c410] 034. 新しい風 [#t2e021e6] 033. 分譲地下見 [#zf4f8e85] 036. 前原圭一 [#x275aea9] ゲーム盤と駒の準備 [#y0188d89] 041. 昭和58年6月 [#z910ff21] 043. 暇潰し編のカケラ [#o5cc3277] 044. 鬼隠し編のカケラ [#i67e7ad5] 045. 罪滅し編のカケラ [#n6282c07] 046. 綿流し編のカケラ [#k9d1e634] 047. 目明し編のカケラ [#q573c968] 048. 祟殺し編のカケラ [#ra68cc23] 049. 皆殺し編のカケラ [#ba1133b9] 050. 祭囃し編のカケラ [#a8d1fa3b] 051. カケラ屑 [#q8917843] 紡ぎ順序 [#z56f9568] 昭和52年以前 026. 地元説明会 配列:1-6番目 必要条件:まずはこのカケラが必要です。 紡ぎ先:繰り返される謝罪(013)、北条家と園崎家の対立(029, 040) 形式:羽入視点。S52以前(S50/10〜)。 地元説明会会場は体育館。満場の村人が役人と対立。 地元説明会の最中に、北条が園崎お魎に啖呵。園崎家と北条家との対立。 羽入が謝罪を繰り返す。 040. 古手梨花 配列:7-11番目 必要条件:北条家と園崎家の対立が必要です(026)。 紡ぎ先:苺ミルクの飴(038)、梨花と沙都子のお買い物(027) 形式:梨花視点。梨花・沙都子の会話。S52以前(S50/10〜)。 北条家への村人による陰湿な虐めが重なる。梨花個人ではこれをどうにもできない。 買い物の最中に梨花と沙都子が一緒になる。 沙都子は買い物中にばら撒いてしまった小銭を拾う。往来する村人の誰もがそれを手伝わない。梨花が手伝うと村人もそれに倣って拾い始める。 梨花は、買い物のお駄賃として店先のご主人に貰った苺ミルクの飴を沙都子にあげようとするが、それを見ていた沙都子に拒否され、自分の軽率さに辟易する。 昭和53年 009. ダム計画撤回作戦 配列:1-6番目 必要条件:まずはこのカケラが必要です。 紡ぎ先:大臣孫の誘拐作戦指示(012) 形式:鷹野視点。鷹野・入江・富竹の会話。S53/6/18以前。 富竹がふざけて入江を「入江二佐」と呼ぶ。富竹の発音では「リサ」に聞こえる。 ダム計画の発表後、雛見沢は大騒ぎに。入江も地元説明会に出席。 『東京』も圧力を掛けているが、建設省とのコネクション不足により難航。 『東京』側は「荒療治も辞さない」構え。犬飼大臣の孫誘拐を指すものと思われる。 023. 富竹ジロウ 配列:1-6番目 必要条件:まずはこのカケラが必要です。 紡ぎ先:富竹ジロウの微熱(022) 形式:富竹視点。富竹・鷹野の会話。S53/7以降。 廃線となったバス停跡の小屋で雨宿り。 富竹はもと自衛官。「ちょっとだけ教官の真似事」をしており、怪我で目を傷つけ、事務職に移される。 「富竹ジロウの微熱」とは、恋による微熱。 昭和54年 018. 入江京介 配列:1-6番目 必要条件:まずはこのカケラが必要です。 紡ぎ先:研究の座礁(012)、研究には生きた検体(005)、入江京介の過去の回想(017) 形式:入江視点。入江・鷹野の会話。S54/6/24以前。 検死体からは、電子顕微鏡でも雛見沢症候群のウィルスは発見されず。 鷹野が生きた検体の用意するために山狗に調査を依頼。 017. 入江の生い立ち 配列:7-11番目 必要条件:入江京介の過去の回想が必要です(018)。 紡ぎ先:入江京介の医者になる動機(002) 形式:入江の独白。入江の学生時代。 入江は国立大学の医学部出身。 入江の上京中、父親が母親に対して家庭内暴力。父親は見境なく喧嘩を吹っかけた愚連隊もどきに袋叩きに遭い死亡。 入江の父親は土建職人。角材で頭部強打したときの脳障害が父の豹変を招いた、と入江は推測。精神外科を志望する。 012. 女王への協力依頼 配列:7-11番目 必要条件:研究の座礁が必要です(018)。大臣孫の誘拐作戦指示が必要です(009)。 紡ぎ先:女王感染者の協力(010)、神主の入江機関との接触(027) 形式:三人称。古手一家の会話。S54/6? 梨花の父(神主)が入江診療所に聞いた話を家族に伝える。 梨花は研究協力を快諾。梨花の母は不信感を募らせる。 010. 谷河内の採石場 配列:12-17番目 必要条件:女王感染者の協力が必要です(012)。 紡ぎ先:緊急マニュアル草案(025) 形式:鷹野の独白。入江機関設立時。 一二三の説によると、女王感染者の死亡時は、平均48時間以内に一般感染者全員が末期発症する。 統計により、梨花の体調不良時は普段よりも通院者が格段に多いことが示されている。 入江機関は女王感染者の死亡に備えた封殺作戦マニュアルを作成。アルファベットプロジェクトが担当。 ダミー会社経由で、谷河内地区の閉鎖採石場を取得し、封殺作戦用機材の秘密備蓄基地とする。 027. 神主の憂鬱 配列:12-17番目 必要条件:梨花と沙都子のお買い物が必要です(040)。神主と入江機関の接触が必要です(012)。 紡ぎ先:梨花の父に日和見主義者の烙印(007) 形式:梨花の父(神主)視点。S54/6? 古手神社の集会所にて、鬼ヶ淵死守同盟の会合。会合後の歓談中。 北条家は、説明会での暴言以降、ダム反対派はおろか立ち退き派からも嫌われ孤立していた。 神主は、お魎に北条家への許しを請うが一蹴され、以降日和見主義と批判される。 013. バラバラ殺人事件 配列:7-11番目 必要条件:繰り返される謝罪が必要です(026)。 紡ぎ先:現場監督の死(006)、ダム現場監督の死亡(024)、ダム建設現場の惨劇(005) 形式:作業員視点。S54/6/24。 現場監督に職務中の飲酒を咎められ喧嘩に。現場監督は錯乱状態に。取り押さえがエスカレートして殺害。 リーダー格が監督の死体の隠蔽を指示。「さっきまで監督が浮かべていた」鬼のような形相。 005. 生贄第一号 配列:12-17番目 必要条件:研究には生きた検体が必要が必要です(018)。ダム建設現場の惨劇が必要です(013)。 紡ぎ先:L5発症者の初解剖(004) 形式:入江視点。入江・鷹野の会話。S54/6/24(前後?) 深夜2時、入江は鷹野からの電話で目が醒める。 山狗が用意した生きた検体を手に入れる。ダム建設現場の作業員。 乱暴に切断された右腕を所持していた。 024. おやっさん 配列:12-17番目 必要条件:ダム現場監督の死亡が必要です(013)。 紡ぎ先:大石蔵人の宣戦布告(015) 形式:大石視点。大石・熊谷・鑑識爺の会話。S54/6/24以降。 大石の父親は、終戦直前の名古屋で空爆に巻き込まれ戦死。 大石は、終戦後の闇米買いの取り締まり中に、父親に瓜二つのおやっさんと出会う。 おやっさんのバラバラ死体を前に、大石は園崎家の糾弾を決意。 004. 研究快調 配列:18-19番目 必要条件:L5発症者の初解剖が必要です(005)。女王感染者の協力が必要です(012)。 紡ぎ先:入江京介の決意(001)、脳脊椎液採取の事前承諾(019) 形式:三人称。入江・鷹野・梨花・古手神主(梨花の父)の会話。S54〜S55。 梨花の検査協力により、雛見沢症候群の研究が順調に進む。 入江は、古手一家に梨花の脳脊髄液採取について同意を求める。翌週に承諾を得る。 鷹野は、入江の研究への軟弱な態度を揶揄する。入江は、雛見沢症候群研究を決着させる決意を示す。 019. 定期監査 配列:20-21番目 必要条件:脳脊椎液採取の事前承諾が必要です(004)。 紡ぎ先:祝杯のワイン(025) 形式:鷹野視点。鷹野・富竹・入江・小泉の会話。S54〜S55。 富竹がふざけて入江を「入江二佐」と呼ぶ。富竹の発音では「リサ」に聞こえる。 雛見沢症候群の病原体特定に成功。入江機関の劇的快挙となる。 鷹野は小泉と通話。祝杯のワインを診療所に送られる。 一二三の死は病院からの飛び降り自殺。 昭和55年 030. 北条悟史 配列:1-6番目 必要条件:まずはこのカケラが必要です。 紡ぎ先:北条悟史の兄としての使命感(014) 形式:悟史視点。悟史・沙都子の会話。S55/6/22以前。 悟史は、夕方になっても帰らない沙都子を裏山に探しに行く。 沙都子は両親を忌み嫌い避けている。 沙都子は前の父親と再婚後の父親を混同することがある。 前の父親に食事を食べ切るまで椅子に縛り付けられたこともある。 母親の生存時から沙都子が裏山でトラップ作りをしていたことが判明する。 039. 北条沙都子 配列:1-6番目 必要条件:まずはこのカケラが必要です。 紡ぎ先:北条沙都子の自己紹介(029) 形式:沙都子の独白。S55/6/22以前。 沙都子の過去の苗字は、畠・吉澤・松浦。 母親の再三の再婚を見るにつけ、結婚に興味を持たなくなる。 いずれの場合においても、父親が嫌い。 北条になってからは、両親の仲は割と良好であるが、沙都子は遅かれ早かれまた離婚になると踏んでいる。 子供が居ると再婚が難しいことから、沙都子は両親にとって自分が邪魔であると思っている。 養父への警戒、殺されるのではという強迫観念と殺意を抱く。 この思考に至るまでに、テキストの文字が漸次的に赤くなる。 029. 北条兄妹 配列:7-11番目 必要条件:北条家と園崎家の対立が必要です(026)。北条沙都子の自己紹介が必要です(039)。 紡ぎ先:北条沙都子の入院(006) 形式:入江視点。入江の独白と入江・悟史の会話。S55/6/22以降。 悟史が体調不良を訴え入江診療所へ。ストレス緩和のために入江の野球チームへ参加。 北条夫妻の転落死後、警察の事情聴取中に沙都子が倒れ、診療所へ入院。 038. 園崎魅音 配列:12-17番目 必要条件:苺ミルクの飴が必要です(040)。 紡ぎ先:園崎家のスイカ(034)、お駄賃の金平糖(028) 形式:魅音視点。魅音・梨花の会話。S55盛夏。 梨花が、スイカのお裾分けを貰いに園崎邸を訪問。お遣いのお駄賃に金平糖を与える。 北条夫婦の死後も、叔父夫婦が近所とトラブルを起こしているため、北条家に対する風当たりは強い。 魅音が自分と園崎家では悟史や沙都子を救えないことを語る。 006. 生贄第二号 配列:12-17番目 必要条件:現場監督の死が必要です(013)。北条沙都子の入院が必要です(029)。 紡ぎ先:北条沙都子の精密検査結果(001)(028) 形式:入江視点。入江・悟史・鷹野の会話。S55/6/22以降。 沙都子は入院中。悟史がしばしば見舞いに来る。大石の面会は断る。 北条沙都子は、精密検査の結果L5であると判定される。 対応マニュアルでは、沙都子は解剖手術されることになる。入江が葛藤に悩む。 028. 兄の苦悩 配列:18-19番目 必要条件:お駄賃の金平糖が必要です(038)。北条沙都子の精密検査結果が必要です(006)。 紡ぎ先:北条悟史の見舞いの謝絶(014)、北条悟史に罪の意識(032) 形式:三人称。入江・悟史の会話。S55/7(以降?)。 雛見沢ファイターズの活動。指導者が練習を見ている間に、入江・悟史はジュースの買出しへ。 沙都子の入院から2週間以上が経過。悟史は沙都子の入院延期を依頼。 悟史は、妹を叔母から庇う生活に嫌気がさしており、入院のお陰で気兼ねなく過ごせると思っている自分に罪悪感を抱く。 入江は、沙都子が死の瀬戸際に立たされていることを悟史に打ち明けられない葛藤に苦しむ。 001. C103投与実験 配列:20-21番目 必要条件:北条沙都子の精密検査結果が必要です(006)。入江京介の決意が必要です(004)。 紡ぎ先:北条沙都子解剖計画の中止(002)、北条悟史の見舞いの謝絶(014) 形式:入江視点。入江・梨花の会話。S55/7以降。 入江は、沙都子の状態がL5であることを梨花に打ち明ける。悟史の面会も謝絶。 入江は、梨花の説得を受け、沙都子の解剖実験を中止し、C103の投与を試みる決意を固める。 014. 白川公園転落事故 配列:22-23番目 必要条件:北条悟史の見舞いの謝絶が必要です(001)。北条悟史の兄としての使命感が必要です(030)。 紡ぎ先:白川公園転落事故の真実(011) 形式:入江視点。入江・大石の会話。S55/7以降。 沙都子の解剖計画は中止。C103投与実験へ。 大石が沙都子の面会を求めに連日診療所を訪問。 入江は、大石の話から、沙都子の両親を突き落としたのはL5状態の沙都子であると確信する。 入江の依頼により、山狗が警察に圧力を掛けて北条夫妻の件を事故として処理。 002. H170 配列:22-23番目 必要条件:北条沙都子解剖計画の中止が必要です(001)。入江京介の医者になる動機が必要です(017)。 紡ぎ先:C103とH170の研究成果(011) 形式:鷹野視点。入江・鷹野の会話。S55/7以降。 沙都子へのC103投与実験の経過は順調。 入江のC103投与実験と並行して、鷹野らのH170の研究も進む。 昭和56年 011. 女王の母の不信 配列:24番目 必要条件:C103とH170の研究成果が必要です(002)。白川公園転落事故の真実が必要です(014)。 紡ぎ先:古手梨花の高熱(022)、梨花の母に入江機関への不信感(007) 形式:梨花の母視点+入江視点。梨花の母・入江・鷹野の会話。S55〜S56。 梨花がかなりの高熱を出す。季節の変わり目による風邪か。 梨花の母は、診療所の職員が拳銃を武装しているのを目撃している。 梨花の母と鷹野が対立。鷹野は柄にもなく激昂する。入江がなだめる。梨花の母はより大きな不信感を募らせる。 022. 一二三四 配列:25-26番目 必要条件:古手梨花の高熱が必要です(011)。富竹ジロウの微熱が必要です(023)。 紡ぎ先:富竹ジロウの約束(025) 形式:富竹視点。富竹・鷹野の会話。S55〜S56? 富竹の雛見沢来訪のたびに、鷹野は写真撮影や散策に付き合うようになっていた。 富竹は高野一二三が鷹野の祖父であることを知る。それを明かさぬよう鷹野に深く釘を刺される。 007. 生贄第三号 配列:25-26番目 必要条件:梨花の父に日和見主義者の烙印が必要です(027)。梨花の母に入江機関への不信感が必要です(011)。 紡ぎ先:三年目の祟りの実行命令(015) 形式:鷹野視点。鷹野・小此木の会話。S56/6/21以前。 梨花の父親は、母親の不信に感化されて方針を変え、研究計画の見通しと3ヶ月以内の研究収束を求めた。非常識といえる対応だが、入江もこれを機に中止は止むを得ないと考えている様子。 鷹野はこの件を小此木に相談。小此木は母親の殺害を提案。鷹野は邪魔な古手夫妻を始末するため、父親殺害と母親拉致(解剖手術のため)を山狗に依頼する。 015. 古手夫妻怪死事件 配列:27-28番目 必要条件:三年目の祟りの実行命令が必要です(007)。大石蔵人の宣戦布告が必要です(024)。 紡ぎ先:三年目のオヤシロ様の祟り(003)、古手夫妻の怪死事件(035) 形式:大石の独白。S56/6/21以降。 綿流し祭の本部テントで、古手家の神主が体調を崩し、入江診療所へ。その20分後、神主が死亡。付き添った奥さんは失踪し入水自殺。 古手夫妻の死亡は不審な点がかなり多い。 古手家の神主はお酒が弱い。 昭和57年 003. 赤いカプセル薬 配列:29-32番目 必要条件:三年目のオヤシロさまの祟りが必要です(015)。 紡ぎ先:赤いカプセル薬(037)、竜宮レナに罪を許すナニカ(032) 形式:竜宮礼奈の独白。S57? 医師から与えられた薬(赤い錠剤かカプセル薬)を服用後は、無感情になり、思考停止し、体が重くなる。 父親を裏切った母親を憎み、母親を奪ったアキヒトおじさんを敵とみなしている。 「母が残していったものを片っ端から打ち壊してやった。」 レナの級友殴打事件は大石の創作である可能性が高い。 罪滅し編にて「人に大怪我をさせたし、学校中のガラスを割ったし」とレナが独白しているため、そうとも限らない。 礼奈は怒りをぶつける対象を自分に向け、罪悪を感じるようになる。 礼奈は、自傷の最中にウジ湧き症を経験する。その刹那に、ナニカに罪を許され、オヤシロ様の祟りを信じるようになる。 035. 部活結成 配列:29-32番目 必要条件:北条悟史に罪の意識が必要です(028)。古手夫妻の怪死事件が必要です(015)。 紡ぎ先:北条悟史にバイト斡旋(031) 形式:魅音視点。魅音・悟史の会話。S57上半期。 魅音は、北条家の風当たりを学校に持ち込ませないように努める。 魅音は、沙都子の笑顔を取り戻すため、部活を始める。 魅音は、悟史にアルバイトを斡旋する。 037. 竜宮レナ 配列:33-34番目 必要条件:赤いカプセル薬が必要です(003)。 紡ぎ先:竜宮家のお引越し(033, 034) 形式:礼奈視点。礼奈・父の会話。S57上半期。 竜宮家が雛見沢へ引越し。隣家の奥さんが雛見沢時代の礼奈を覚えている。 礼奈は父親から綿流し祭について聞く。綿に穢れを流してもらう禊の儀式であること知る。 礼奈は、茨城での穢れた自分を禊とするべく、以後レナと名乗るようになる。 032. 四年目の足音 配列:33-34番目 必要条件:北条悟史に罪の意識が必要です(028)。竜宮レナに罪を許すナニカが必要です(003)。 紡ぎ先:北条悟史に背中の足音(031) 形式:悟史の独白+悟史・レナの会話。S57/6/19以前。 悟史は、沙都子に苛立ちをぶつけようとする「悪魔の感情」を追い出す。 以降、足音がついてくる。 悟史はレナに打ち明ける。レナ曰く「私、……その足音、知ってる。」 031. 休部届け 配列:35-36番目 必要条件:北条悟史にバイト斡旋が必要です(035)。北条悟史に背中の足音が必要です(032)。 紡ぎ先:撲殺用のバット(016) 形式:入江視点。S57/6/19以前。 悟史はアルバイトのために雛見沢ファイターズを休部したいと申し出る。 悟史はバットを借り出しを申し出る。入江は少しでも運動のためにとそれを許可する。 016. 北条叔母撲殺事件 配列:37番目 必要条件:撲殺用のバットが必要です(031)。 紡ぎ先:四年目の祟り(033)、北条沙都子の叔母の死(008) 形式:大石の独白。S57/7。 叔母殺しの犯人は悟史であることが濃厚。 悟史は失踪。別件逮捕の犯人が現れる。上層部から圧力が掛かり捜査終了。 大石の園崎家への疑念が膨らむ。 008. 生贄第四号 配列:38-39番目 必要条件:北条沙都子の叔母の死が必要です(016)。 紡ぎ先:大きなぬいぐるみ(042) 形式:入江視点。入江・悟史・鷹野の会話。S57/6/24。 北条玉枝が殺される。入江は悟史の犯行であると確信。 入江は悟史から電話を受ける。沙都子の誕生日プレゼントの運搬の手伝いを求められる。 悟史は運搬中にL5発症し、入江診療所に運び込まれる。 025. サイコロの1 配列:27-28番目 必要条件:祝杯のワインが必要です(019)。富竹ジロウの約束が必要です(022)。緊急マニュアル草案が必要です(010)。 紡ぎ先:小泉先生の死(020)、治療薬C117の完成(021) 形式:鷹野視点。S57〜S58。 小泉が急性心筋梗塞で死去。鷹野は本葬に参列。 定期監査時に、『東京』のアルファベットプロジェクトの見直しに伴い、入江機関は生物兵器関連の研究中止と3年以内の症候群研究の収束を求められる。後者は入江が反撥。 鷹野は、祖父の偉業が秘密裏に処理されるのを快く思わない。 020. 失意 配列:29-32番目 必要条件:小泉先生の死が必要です(025)。 紡ぎ先:彼女に心の支え(042) 形式:富竹視点。富竹・鷹野の会話。S57〜S58。 富竹と鷹野は写真撮影の散策。鷹野の気乗りしない様子を見て富竹が気遣う。 鷹野は、研究の予算削減や期間短縮に打ちひしがれる。 021. デジャヴ 配列:29-32番目 必要条件:治療薬C117の完成が必要です(025)。 紡ぎ先:生ウニにビタミンA(042) 形式:鷹野視点。S57〜S58。 鷹野は、小泉派のツテを使い、アルファベットプロジェクトの理事会の人間を料亭に招く。ウニ会席で釣る。 鷹野は理事会側に研究内容を説明し再考を請う。 理事会側に研究内容を扱き下ろされる。「踏まないでぇ……」 042. 終末への誘い 配列:40-41番目 必要条件:生ウニにビタミンAが必要です(021)。大きなぬいぐるみが必要です(008)。彼女に心の支えが必要です(020)。 紡ぎ先:鷹野三四の復讐(041) 形式:鷹野視点。S57〜S58。 鷹野は理事会に研究を却下され、飲んだくれる。 黒塗りの車が停まり、鷹野と同年代くらいの女(野村)が鷹野を訪ねる。 女は、理事が研究を否定したのは小泉派の派閥によるところが大きいことを説明。鷹野の研究目的を知り、その目的を叶える手伝いをすると申し出る。 昭和58年 034. 新しい風 配列:35-36番目 必要条件:竜宮家のお引越しが必要です(037)。園崎家のスイカが必要です(038)。 紡ぎ先:縁側のお茶の片付け(036) 形式:魅音視点。魅音・お魎の会話。S57〜S58。 不動産を営む園崎弘(魅音の叔父)が園崎本家を訪問。分譲地見学ツアーの送迎をしている。見学者には前原伊知郎が含まれている。 お魎は、レナとの出会いで明るくなった魅音を見て、園崎の土地の分譲を決断。(圭一が来る最初のきっかけ) 悟史の失踪の一件で魅音に詰め寄られて以降、お魎も北条家との対立解消方法を考え始めている。 風鈴が鳴っている。S57夏またはS58/4辺りか? 033. 分譲地下見 配列:38-39番目 必要条件:竜宮家のお引っ越しが必要です(037)。四年目の祟りが必要です(016)。 紡ぎ先:前原伊知郎の下見(036) 形式:前原伊知郎視点。伊知郎・梨花・羽入の会話。S57〜S58。 前原伊知郎は、別荘地分譲のための見学ツアーに参加。散策中に迷子になる。 分譲地で戯れる羽入と梨花に会う。 036. 前原圭一 配列:40-41番目 必要条件:縁側のお茶の片付けが必要です(034)。前原伊知郎の下見が必要です(033)。 紡ぎ先:前原圭一の転校(041) 形式:圭一視点。圭一・伊知郎・海江田校長・知恵・梨花・羽入の会話。S58/5。 圭一と伊知郎は興宮と雛見沢の校舎を見学。雛見沢分校を選ぶ。 圭一は梨花に沙都子トラップの予言を告げられるが、転校初日に引っ掛かる。何度ループしても毎回必ず引っ掛かるらしい。 ゲーム盤と駒の準備 041. 昭和58年6月 配列:42番目 必要条件:鷹野三四の復讐が必要です(042)。前原圭一の転校が必要です(036)。 紡ぎ先:ゲーム盤の準備(043, 044, 046, 048) 形式:何者か(梨花?)による独白。 043. 暇潰し編のカケラ 配列:43-46番目 必要条件:ゲーム盤の準備が必要です(041)。 紡ぎ先:7つのカケラ(050) 形式:何者か(梨花?)による独白。 044. 鬼隠し編のカケラ 配列:43-46番目 必要条件:ゲーム盤の準備が必要です(041)。 紡ぎ先:鬼隠し編のカケラ(045)、7つのカケラ(050) 形式:何者か(梨花?)による独白。 045. 罪滅し編のカケラ 配列:47-49番目 必要条件:鬼隠し編のカケラが必要です(044)。 紡ぎ先:7つのカケラ(050) 形式:何者か(梨花?)による独白。 046. 綿流し編のカケラ 配列:43-46番目 必要条件:ゲーム盤の準備が必要です(041)。 紡ぎ先:綿流し編のカケラ(047)、7つのカケラ(050) 形式:何者か(梨花?)による独白。 047. 目明し編のカケラ 配列:47-49番目 必要条件:綿流し編のカケラが必要です(046)。 紡ぎ先:7つのカケラ(050) 形式:何者か(梨花?)による独白。 048. 祟殺し編のカケラ 配列:43-46番目 必要条件:ゲーム盤の準備が必要です(041)。 紡ぎ先:祟殺し編のカケラ(049)、7つのカケラ(050) 形式:何者か(梨花?)による独白。 049. 皆殺し編のカケラ 配列:47-49番目 必要条件:祟殺し編のカケラが必要です(048)。 紡ぎ先:7つのカケラ(050) 形式:何者か(梨花?)による独白。 050. 祭囃し編のカケラ 配列:50番目 必要条件:7つのカケラが必要です(043-049)。 紡ぎ先:最後の奇跡(051) 形式:何者か(梨花?)による独白。 051. カケラ屑 配列:51番目 必要条件:最後の奇跡が、必要ですか?(050) 紡ぎ先:7つのカケラ(050) 形式:何者か(梨花?)による独白+三人称+赤坂による独白。S60以降。 「祭囃し編のカケラ」を一度見ないと出現しない。 再度「祭囃し編のカケラ」選択で物語の進行。 黒幕に外交官が関わる暴力団絡みの事件。公安は強硬解決に踏み切る。赤坂が突入し制圧。 赤坂は、雑多な繁華街の朽ちた低層ビルの一室にある空手道場に師事し、稽古に励む。 赤坂は妻を失い、梨花を救えなかったことを悔い、空手を極めている。 紡ぎ順序 テンプレに貼られた一覧表 (「こうやれば解ける」というだけのもので、 ストーリー的な面白さは考慮していない) 17 18 31 16 1ページ目 11 13 27 38 1 15 20 14 2ページ目 8 19 30 37 7 2 22 29 3ページ目 28 21 3 9 23 4 24 26 4ページ目 12 5 36 32 39 35 33 40 5ページ目 34 25 6 10 42 41 43 44 6ページ目 45 46 47 48 49 50 51 52 7ページ目 上表を紡ぎ順にソートしたもの。[ページ数]-[カケラ番号](カケラ番号は各ページの左上から1〜8と充てている)。カッコ内は通し番号。 2-1(009), 3-2(018), 3-7(023), 4-2(026), 4-6(030), 5-7(039), 3-1(017), 2-5(013), 3-8(024), 5-8(040), 1-5(005), 4-5(029), 1-6(006), 2-4(012), 2-2(010), 1-4(004), 1-1(001), 1-2(002), 2-6(014), 2-3(011), 3-6(022), 3-3(019), 4-1(025), 4-3(027), 5-6(038), 4-4(028), 1-7(007), 3-5(021), 3-4(020), 2-7(015), 1-3(003), 4-8(032), 5-3(035), 5-5(037), 5-2(034), 4-7(031), 2-8(016), 1-8(008), 5-1(033), 5-4(036), 6-2(042), 6-1(041), 6-3(043), 6-4(044), 6-5(045), 6-6(046), 6-7(047), 6-8(048), 7-1(049), 7-2(050), 7-3(051), 7-4(052) 必要条件が出揃った時点でカケラを紡いだ場合の配列 1-6番目:009, 018, 023, 026, 030, 039 7-11番目:012, 013, 017, 029, 040 12-17番目:005, 006, 010, 024, 027, 038 18-19番目:004, 028 20-21番目:001, 019 22-23番目:002, 014 24番目:011 25-26番目:007, 022 27-28番目:015, 025 29-32番目:003, 020, 021, 035 33-34番目:032, 037 35-36番目:031, 034 37番目:016 38-39番目:008, 033 40-41番目:036, 042 42番目:041 43-46番目:043, 044, 046, 048 47-49番目:045, 047, 049 50番目:050 51番目:051